package com.fg.cloud.manager.mapper.system;

import java.util.List;
import java.util.Map;
import java.util.Set;

import org.apache.ibatis.annotations.Param;

import com.fg.cloud.common.PageUtils;
import com.fg.cloud.manager.entry.system.RoleEntity;
import com.fg.cloud.manager.entry.system.vo.RoleVo;
import com.fg.cloud.manager.mapper.BaseMapper;

/**
 * @author ：
 * @date   ： 2017年6月16日 上午10:52:03
 * @Desc   ：系统菜单mapper
 */
public interface RoleMapper extends BaseMapper {
	
	/**
	  * Description:系统平台批量删除
	  * @param ids
	  * @return
	  * @author shaoqiping
	  * @date 2017年10月30日下午5:02:21
	*/
	int sysDeletes(@Param("ids")Long[] ids);
	/**
	  * Description:系统平台查询记数
	  * @param condition
	  * @return
	  * @author shaoqiping
	  * @date 2017年10月30日上午11:52:13
	*/
	Long sysFilterCount(@Param("condition") Map<String, Object> condition);
	/**
	  * Description:系统平台查询列表
	  * @param pageinfo
	  * @return
	  * @author shaoqiping
	  * @date 2017年10月30日上午11:49:09
	*/
	List<RoleEntity> sysFindList(PageUtils<RoleEntity> pageinfo);
	/**
	  * Description:验证查询
	  * @param id
	  * @return RoleEntity
	  * @author shaoqiping
	  * @date 2017年8月11日下午5:52:07
	*/
	RoleEntity selectToCheck(Long id);
	
	/**
	  * Description: 删除用户角色表信息 t_factory_user_role
	  * @param roleId
	  * @return 大于0 删除成功
	  * @author shaoqiping
	  * @date 2017年8月8日下午3:52:35
	*/
	int deleteUserRole(Long roleId);
	
	/**
	  * Description: 批量删除用户角色表信息 t_factory_user_role
	  * @param roleId
	  * @return 大于0 删除成功
	  * @author shaoqiping
	  * @date 2017年8月8日下午3:52:35
	*/
	int deleteUserRoles(Long[] roleIds);
	/**
	  * Description:删除菜单角色表信息 t_system_role_menu
	  * @param roleId
	  * @return 大于0 删除成功
	  * @author shaoqiping
	  * @date 2017年8月8日下午3:53:09
	*/
	int deleteMenuRole(Long roleId);
	/**
	  * Description:批量删除菜单角色表信息 t_system_role_menu
	  * @param roleId
	  * @return 大于0 删除成功
	  * @author shaoqiping
	  * @date 2017年8月8日下午3:53:09
	*/
	int deleteMenuRoles(Long[] roleIds);
	/**
	  * Description:删除菜单角色表指定信息 t_system_role_menu
	  * @param roleId
	  * @param menuIds
	  * @return 大于0 删除成功
	  * @author shaoqiping
	  * @date 2017年8月11日上午9:24:14
	*/
	int deleteSpecifiedMenuRole(@Param(value="roleId")Long roleId,@Param(value="menuIds")Long[] menuIds);
	/**
	  * Description:根据角色名查重
	  * @param entity
	  * @return RoleEntity
	  * @author shaoqiping
	  * @date 2017年8月8日上午10:25:06
	*/
	RoleEntity selectByRoleName(RoleEntity entity);
	
	/**
	  * Description:角色批量删除
	  * @param ids
	  * @return int 大于0  成功
	  * @author shaoqiping
	  * @date 2017年8月8日上午11:33:41
	*/
	int deletes(Map<String,Object> map);
	/**
	 * 批量新增数据
	 * @param roleId 角色ID
	 * @param menuIds 菜单项
	 * @return int
	 */
	int batchInsert(@Param("roleId")Long roleId, @Param("menuIds")Long[] menuIds);
	
	/**
	 * 查询某个厂商下所有的角色信息（包含通用及个性角色）
	 * @param userId
	 * @param facId
	 * @return List
	 */
	List<RoleVo> selectUserRoles(Long facId);
	
	/**
	  * Description:根据角色ID查询关联的菜单ID
	  * @param roleId
	  * @return List
	  * @author shaoqiping
	  * @date 2017年8月11日上午9:12:34
	*/
	List<Long> selectMenuIdByRoleId(Long roleId);
	/**
	 * 查询指定用户的角色信息
	 * @param userId
	 * @return List<Long>
	 */
	List<Long> selectByUserId(Long userId);
	
	/**
	 * 查询指定用户的角色信息
	 * @param userId
	 * @return List<Long>
	 */
	Set<String> selectRoleByUserId(@Param("userId")Long userId);
	
	
}
